Node.js SSL/ HTTPS

HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一个被互联网广泛使用的协议之一,所有 WWW 文件都必须遵守的标准,但缺点是 HTTP 传输数据是不会被加密的。因此 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议) 的出现解决了这个问题,他主要使用 SSL(Secure Sockets Layer,安全套接层协议)用于对 HTTP 传输协议进行加密,以保证会话过程中的安全性。

由于 SSL 协议中主要通过对称加密和非对称加密两种,在建立链路后,SSL 内容会使用其对称加密的公钥对其进行非对称加密,之后 SSL 会对内容进行对称加密。

OpenSSL

由于 TLS\SSL 是非对称加密,因此在此之前需要准备加密解密和验证的私钥以及数字证书、和服务器、客户端的密钥证书

1
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost'  -keyout localhost-privkey.pem -out localhost-cert.pem

HTTPS

.

1
2
3
4
5
6
7
8
9
10
11
12
13
const https = require('https')
const fs = require('fs')

const options = {
key: fs.readFileSync('./ssl/localhost-privkey.pem'),
cert: fs.readFileSync('./ssl/localhost-cert.pem')
}

https.createServer(options, (req,res) => {
res.writeHead(200)
res.write('<h1>Hello,world!</h1>')
res.end()
}).listen(8210)

之后我们访问 https://localhost 同样会提示证书的问题,因为我们这个是自己生成的并不是以权威机构签名,因此在浏览器中会报错。

本文使用《江雪分析公开知识存储库知识共享许可证》进行发布